﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
#if !DOT_NET
using Windows.Foundation;
#endif
#if NETFX_CORE
using Windows.UI.Xaml;
using Windows.UI.Xaml.Controls;

#else
using System.Windows;
using System.Windows.Controls;

#endif

namespace StyleMVVM.Suspension
{
	public interface IFrameSuspensionService
	{
		IReadOnlyList<Type> KnownTypes { get; }

#if NETFX_CORE
		IAsyncAction RestoreAsync();

		IAsyncAction SaveAsync();
#else
		Task RestoreAsync();

		Task SaveAsync();
#endif

		void RegisterFrame(Frame frame, String sessionStateKey);

		void UnregisterFrame(Frame frame);

		IDictionary<String, Object> SessionStateForFrame(Frame frame);
	}
}